// Learn TypeScript:
//  - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/typescript.html
//  - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html
// Learn Attribute:
//  - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html
//  - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html
//  - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html

const {ccclass, property} = cc._decorator;

@ccclass
export default class ButtonEx extends cc.Component {
    
    @property([cc.Node])
    public checkNodes: cc.Node[] = [];

    @property([cc.Node])
    public uncheckNodes: cc.Node[] = [];

    @property(cc.Node)
    public buttonExGroup: cc.Node = null;

    @property
    public isChecked: boolean = false;

    callback (event) {
        if (this.buttonExGroup) {
            this.buttonExGroup.emit("ButtonEx",{target:this})
        }else {
            this.setChecked(!this.isChecked);
        }
    }

    setChecked (isChecked) {
        if (this.isChecked == isChecked) {
            return;
        }

        this.isChecked = isChecked;
        this.nodesChecked(this.checkNodes,isChecked);
        this.nodesChecked(this.uncheckNodes,!isChecked);
        this.node.emit("ButtonExCheck",{target:this, isChecked : isChecked})
    }

    nodesChecked (nodes, enabled) {
        nodes.forEach(element => {
            element.active = !enabled;
        });
    }
}
